\chapter{Интернет}
\pagenumbering{arabic}

\section{настроить сетевую карту в Linux}
Несмотря на то, что во многих современных дистрибутивах есть красивые графические утилиты по настройке сетевой карты, в ряде случаев проще настроить всё руками в конфигах. Это очень просто - вписать несколько строчек в нужные конфиги.

\subsection{Как посмотреть текущие настройки сетевой карты в Линукс}
Просмотреть текущие настройки можно, набрав в консоли с привилегиями рута команду:

\begin{lstlisting}
# ifconfig
\end{lstlisting}
или
\begin{lstlisting}
$ sudo ifconfig
\end{lstlisting}


В результате в консоль будет выдано что-то вроде:

\begin{lstlisting}
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:104 errors:0 dropped:0 overruns:0 frame:0
TX packets:104 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9387 (9.1 KiB) TX bytes:9387 (9.1 KiB)

eth0 Link encap:Ethernet HWaddr 00:0A:E4:53:AA:2D
inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:21 Base address:0x2c00
\end{lstlisting}


Отсюда видно, что настроены два сетевых интерфейса: петлевой (loopback) под названием lo, и обычная сетевая карта (которая Ethernet) называемая eth0. Причём если в интерфейс eth0 вставлен сетевой провод, идущий в свитч, будет написано RUNNING, то есть:

\begin{lstlisting}
inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20e:2eff:feec:ef9f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
\end{lstlisting}


Простая настройка сетевого интерфейса возможна командой:
\begin{lstlisting}
# ifconfig eth0 192.168.1.5
\end{lstlisting}



Чтобы заглушить сетевой интерфейс, набираем:

\begin{lstlisting}
# ifdown eth0 
\end{lstlisting}




\subsection{Настройка сетевого соединения в Линукс}
Для этого потребуются права администратора и текстовый редактор (nano, vim, emacs). Так же нужно представлять, какой IP-адрес следует присвоить сетевой карте, адрес шлюза и прочие параметры.

Сначала нужно выяснить, как называется сетевой интерфейс, соответствующий вашей сетевой карте. Делается это так: в консоли пишем

\begin{lstlisting}
$ dmesg | grep -i Eth
\end{lstlisting}


В результате должны получить что-то вроде (выделение моё):

\begin{lstlisting}
8139too Fast Ethernet driver 0.9.28
eth0: RealTek RTL8139 at 0xdf822c00, 00:15:f2:51:ad:da, IRQ 21
eth0: Identified 8139 chip type 'RTL-8101'
\end{lstlisting}


Так, похоже, что называется он eth0 (потому, что ethernet, 0 - нулевое устройство - довольно логично). В этом примере дальше будет предполагаться, что интерфейс - eth0.


\subsection{Настройка сетевого соединения со статическим IP}
Для этого следует отредактировать файл:

\begin{lstlisting}
# nano /etc/network/interfaces
\end{lstlisting}
или
\begin{lstlisting}
# sudo nano /etc/network/interfaces
\end{lstlisting}


Перед тем, как его править, следует решить, какой IP-адрес назначается машине. Если вы подключаетесь к уже настроенной сети - хорошо бы посмотреть, какие настройки есть там. Например, если подключение происходит к CorvettTelecom, настройки вам дадут. Если же сеть самопальная, например из двух компьютеров, нижеследующий пример подойдёт.

В общем, при назначении статических адресов нужно указать: IP-адрес (address), маску подсети (netmask) и адрес шлюза (gateway). Для локальной сети файл /etc/network/interfaces нужно изменить так:

\begin{lstlisting}
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.1
\end{lstlisting}


В этом примере назначен IP-адрес 192.168.1.5.


\subsection{Настройка сетевого соединения с динамическим IP}
Редактируем тот же файл, отвечающий в Линукс за сетевые настройки:

\begin{lstlisting}
# nano /etc/network/interfaces
\end{lstlisting}
или
\begin{lstlisting}
$ sudo nano /etc/network/interfaces
\end{lstlisting}


Здесь всё проще: нужно лишь привести файл к виду:

\begin{lstlisting}
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
\end{lstlisting}


Так же можно настроить и из консоли:

\begin{lstlisting}
# dhcpcd eth0 
\end{lstlisting}


Для этого в системе должен быть установлен пакет dhcp3-client

\subsection{Два слова о беспроводных сетях}
Чтобы изменить тип интерфейса

\begin{lstlisting}
# wlanconfig ath0 destroy
# wlanconfig ath0 create wlandev wifi0
# wlanmode adhoc
\end{lstlisting}


Для того, чтобы посмотреть список сетей, набираем:

\begin{lstlisting}
# iwlist ath0 scan 
\end{lstlisting}


или

\begin{lstlisting}
# wlanconfig ath0 list ap
\end{lstlisting}


Если есть открытая сеть и нужно к ней подключиться, набираем от рута:

\begin{lstlisting}
# iwconfig ath0 essid SomeESSID
\end{lstlisting}


Для того, чтобы соединение шифровалось с использованием WEP, пишем:

\begin{lstlisting}
# iwconfig ath0 key ...
\end{lstlisting}



\subsection{Настройка адресов серверов имён (DNS, nameserver)}
Если вы не настроите это, то сможете подключаться к ресурсам сети только по IP-адресам, что несколько неудобно. Для того, чтобы в Линукс прописать адреса серверов имён (DNS address), нужно отредактировать файл /etc/resolv.conf или создать его, если его нет.

\begin{lstlisting}
# nano /etc/resolv.conf
\end{lstlisting}
или
\begin{lstlisting}
$ sudo nano /etc/resolv.conf
\end{lstlisting}


И прописать адреса следующим образом:

\begin{lstlisting}
nameserver 192.168.1.1
nameserver 192.168.2.1
\end{lstlisting}


столько, сколько их нужно. Слово nameserver добавлять обязательно.


Чтобы изменения настройки сетевых интерфейсов вступили в силу...
... можно перезагрузиться, но это не наш метод. Без перезагрузки следует дать команду:

\begin{lstlisting}
# /etc/init.d/networking restart
\end{lstlisting}
или
\begin{lstlisting}
$ sudo /etc/init.d/networking restart
\end{lstlisting}


Всё, после этого настойки вступают в силу для всех сетевых интерфейсов.



\section{Wget - повелитель закачек, или Как использовать wget}
Ниже приводятся наиболее часто используемые мною опции.

Нужно просто скачать файл и/или продолжить закачку, которая оборвалась. Это очень и очень легко сделать, написав в терминале несколько строчек.

Просто скачать файл wget-ом

\begin{lstlisting}
$ wget ftp://vasya.pupkin.com/film.avi 
\end{lstlisting}



Ещё вариант: часть файла скачана, закачка оборвалась.

Для продолжения файла закачки пишем:

\begin{lstlisting}
$ wget -c ftp://vasya.pupkin.com/film.avi
\end{lstlisting}
или
\begin{lstlisting}
$ wget -continue ftp://vasya.pupkin.com/film.avi 
\end{lstlisting}


Вместо -с можно написать -continue, так как каждый ключ имеет короткую и длинную формы: длинные ключи проще запомнить, но дольше писать. Можно легко смешивать различные формы написания.

Чтобы выкачать файлы из списка, содержащего прямые ссылки:

\begin{lstlisting}
wget -i pupkinlist
\end{lstlisting}
или
\begin{lstlisting}
wget -input-file=pupkinlist 
\end{lstlisting}


Здесь указывается только файл, в котором содержатся ссылки. Файл может так же быть HTML-страницей, в которой есть ссылки. Они будут выкачаны указанной выше командой.


\subsection{Использование а-ля "Teleport Pro for Linux"}
При скачивании веб-сайтов возможностей больше, и поэтому требуется больше ключей. Опять-таки, запоминать их все не обязательно, можно сделать скрипт (а лучше несколько - под разные случаи) и вызывать их.
Так вот, если имеется веб-сайт, и хотелось бы иметь его локальную копию на компьютере, чтобы, отключившись от сети, можно было не торопясь его почитать.

Зеркалирование сайтов на локальную машину:
\begin{lstlisting}
wget -m http://www.vasyapupkin.com/
\end{lstlisting}


Замечу, что при этом ссылки останутся абсолютными - то есть, будут указывать на Интернет-адреса, и удобно просматривать на локальной машине будет затруднительно.

Копирование сайта для локального просмотра:
\begin{lstlisting}
wget -r -l0 -np -k http://www.vasyapupkin.com/
\end{lstlisting}


При этом будет включена рекурсивная выгрузка (ключ -r, --recursive), то есть не только файлы с главной страницы, но и все остальные, на которые ведут ссылки (ключ -l0 бесконечная вложенность ссылок). Имена ссылок будут переконвертированы в локальные для удобства просмотра (ключ -k). Так же при помощи ключа -np (no-parrent) можно запретить wget подниматься выше начального адреса при рекурсивной загрузке, то есть если вы копируете http://home.vasyapupkin.com/ то по ссылкам с основного сайта http://www.vasyapupkin.com/ скопированы не будут.

\subsection{И несколько других полезных ключей}
Включение и исключение файлов при загрузке

\begin{lstlisting}
-A acclist | -accept acclist

-R rejlist | -reject rejlist
\end{lstlisting}


Задаёт разделяемые запятыми шаблоны имён файлов, которые следует загружать (acclist) или игнорировать (rejlist).

\begin{lstlisting}
-k | -convert-links
\end{lstlisting}


Превращает абсолютные ссылки (типа http://www...) в относительные (типа file///home/vasya/www/index.html) для удобства локального просмотра. Чтобы локально в броузере просмотреть скачанный сайт, открываете файл index.html в броузере и бродите по ссылкам точно так же, как если бы вы были подключены к Интернету.

\begin{lstlisting}
-H --span-hosts
\end{lstlisting}


Разрешает wget скачивать данные с любого адреса, на который есть ссылка в запрашиваемом документе.

\begin{lstlisting}
-p --page-requisites
\end{lstlisting}


Загружать все файлы, которые нужны для отображения страниц HTML. Например: рисунки, звук и каскадные стили. После завершения загрузки конвертировать ссылки в документе для просмотра в автономном режиме. Это касается не только видимых ссылок на другие документы, а ссылок на все внешние локальные файлы.


Ограничение канала загрузки -limit-rate=значение в кб. Например:

\begin{lstlisting}
$ wget --limit-rate=50k http://www....
\end{lstlisting}


Это приведет к тому, что скорость загрузки не будет превышать указанных в примере пятидесяти килобайт/сек.

Siteget - простой скрипт для скачивания сайтов
Если вам надоели все эти премудрости с ключами wget и нужно просто скачать сайт, то siteget вам определённо понравится. Это довольно простой скрипт с необходимыми параметрами для загрузки сайта.
Взять скрипт можно тут, использование очень простое:

\begin{lstlisting}
$ siteget http://www.vasyapupkin.com/
\end{lstlisting}


Большое спасибо за ссылку jetxee, который писал об этом здесь.

